/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package business;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;

/**
 * Classe de gestion du panier d'un client (stocké dans la session)
 * @author Thomas
 * @version 1.0
 */
public class BasketMgr {

    private List<Product> products;

    /**
     * Seul constructeur, crée une nouvelle ArrayList
     * pour lister les produits ajoutés au panier
     */
    public BasketMgr() {
        products = new ArrayList<Product>();
    }

    /**
     * Renvoie la liste des produits du panier triés par nom
     * La liste renvoyée peut être vide
     * @return Liste des produits du panier
     * @see business.Product
     */
    public List<Product> getProducts() {
        Collections.sort(products);
        return products;
    }

    /**
     * Ajoute un nouveau produit dans la liste
     * @param product Produit à ajouter à la liste du panier
     */
    public void addProduct(Product product) {
        products.add(product);
    }

    /**
     * Supprime le premier produit de la liste dont l'ID correspond au paramètre
     * @param productID ID du produit à supprimer de la liste du panier
     */
    public void removeProduct(int productID) {
        Iterator<Product> i = products.iterator();
        while (i.hasNext()) {
            if (productID == i.next().getID()) {
                i.remove();
                break;
            }
        }
    }

    /**
     * Calcule le prix total du panier
     * @return Prix total du panier
     */
    public BigDecimal getTotal() {
        BigDecimal total = new BigDecimal(0);

        for (Product product : products) {
            total = total.add(product.getPrice());
        }
        return total;
    }
}
